package cn.jsj.invite.service;

import cn.jsj.invite.aop.StringParam;
import org.springframework.validation.annotation.Validated;

import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;

@Validated
public interface EmailService {


    /**
     * 发送一个邮件,该接口串行执行
     *
     * @param title      邮件标题
     * @param content    邮件内容
     * @param aimAddress 发送地址
     * @return 邮件发送耗费时间（毫秒）
     */
    Long pushMailMessage(@StringParam(allowSpace = false) String title, @StringParam String content, @NotBlank @Email String aimAddress);


    /**
     * 生成6位验证码并发送到目标邮箱
     *
     * @param durationTime 验证码有效时间，单位毫秒
     * @param aimAddress   目标邮件地址
     * @return 验证码, 保证不返回null
     */
    String sendVerificationCode(long durationTime, @NotBlank @Email String aimAddress, HttpServletRequest request);


    /**
     * 检查验证码是否有效
     *
     * @param verificationCode 验证码
     * @param email            邮箱地址
     * @return true正确，保证不返回null
     */
    Boolean checkVerificationCode(String verificationCode, @NotBlank @Email String email);


}
